// 响应状态码枚举
export enum ResponseCode {
  SUCCESS = 0, // 成功
  FAIL = -1, // 失败
  ILLEGAL_ARGUMENTS = 1, // 非法参数
  VALIDATION_ERROR = 2, // 验证错误
  UNAUTHORIZED = 401, // 未授权
  FORBIDDEN = 403, // 禁止访问
  NOT_FOUND = 404, // 未找到
  INTERNAL_ERROR = 500, // 服务器内部错误
  BAD_REQUEST = 400, // 错误请求
}

// 响应消息映射
export const ResponseMessage: Record<ResponseCode, string> = {
  [ResponseCode.SUCCESS]: '操作成功',
  [ResponseCode.FAIL]: '操作失败',
  [ResponseCode.ILLEGAL_ARGUMENTS]: '参数错误',
  [ResponseCode.UNAUTHORIZED]: '未授权',
  [ResponseCode.FORBIDDEN]: '禁止访问',
  [ResponseCode.NOT_FOUND]: '资源未找到',
  [ResponseCode.INTERNAL_ERROR]: '服务器内部错误',
  [ResponseCode.BAD_REQUEST]: '错误的请求',
  [ResponseCode.VALIDATION_ERROR]: '数据验证错误',
};

// 基础响应接口
export interface BaseResponse {
  code: ResponseCode;
  message: string;
  timestamp: number;
}

// 数据响应接口
export interface DataResponse<T> extends BaseResponse {
  data: T;
}

// 分页数据接口
export interface PaginationData<T> {
  list: T[];
  total: number;
  page: number;
  pageSize: number;
}

// 分页响应接口
export interface PaginationResponse<T> extends BaseResponse {
  data: PaginationData<T>;
}
